package com.sniff.atp.entity;

import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Data;
import lombok.EqualsAndHashCode;
import org.springframework.util.StringUtils;

import java.math.BigDecimal;
import java.util.Date;
import java.util.Objects;

/**
 * @BelongsProject: sniff-atp
 * @BelongsPackage: com.sniff.atp.entity
 * @Author: zxy
 * @CreateTime: 2024-03-12 16:41
 * @Description:
 * @Version: 1.0
 */
@TableName("sniff_purchase_order")
public class PurchaseOrder {
    @TableId(
            type = IdType.INPUT
    )
    private Long purchaseId;
    private Integer systemSource;
    private String purchaseNo;
    private String purchaseManageUserId;
    private String purchaseManageUserName;
    private String purchaseUserId;
    private String purchaseUserName;
    private Integer purchaseStatus;
    private Integer stockInStatus;
    private Integer stockInNum;
    private Integer signNum;
    private String wareCode;
    private Integer createNum;
    private String purchasingAbnormalOrderNo;
    private String prePurchase;
    private String nextPurchase;
    private Date splitDate;
    private String tbAccount;
    private String tbOrderNo;
    private String accountType;
    private String alipayAccount;
    private String tradeNo;
    private Integer num;
    private Integer purchaseNum;
    private Date payTime;
    private Integer splitConfirmStatus;
    private Date splitConfirmTime;
    private String splitConfirmUserId;
    private String splitConfirmUserName;
    private BigDecimal purchaseMoney;
    private BigDecimal purchaseFreight;
    private String stallName;
    private String stallFloorNumber;
    private String stallRoomNumber;
    private Date createTime;
    private Date updateTime;
    private Integer logisticsStatus;
    private Integer bizType;
    private String platformType;
    private String shopCode;
    private String shopName;
    private Integer viewStatus;
    private Integer pickStatus;
    private Integer syncStatus;
    private Date purchaseCompleteTime;
    private Date purchaseCreateTime;
    private Date stockCompleteTime;
    private Long originalPurchaseId;
    private String originalPurchaseNo;
    private Integer abnormalStatus;
    private Integer reconciliationStatus;
    private String remark;

    public boolean validPurchaseDone() {
        return !StringUtils.isEmpty(this.tbAccount) && !StringUtils.isEmpty(this.alipayAccount) && !Objects.isNull(this.payTime) && !StringUtils.isEmpty(this.tbOrderNo) && !Objects.isNull(this.purchaseMoney) && !Objects.isNull(this.purchaseFreight);
    }

    public PurchaseOrder() {
    }

    public Long getPurchaseId() {
        return this.purchaseId;
    }

    public Integer getSystemSource() {
        return this.systemSource;
    }

    public String getPurchaseNo() {
        return this.purchaseNo;
    }

    public String getPurchaseManageUserId() {
        return this.purchaseManageUserId;
    }

    public String getPurchaseManageUserName() {
        return this.purchaseManageUserName;
    }

    public String getPurchaseUserId() {
        return this.purchaseUserId;
    }

    public String getPurchaseUserName() {
        return this.purchaseUserName;
    }

    public Integer getPurchaseStatus() {
        return this.purchaseStatus;
    }

    public Integer getStockInStatus() {
        return this.stockInStatus;
    }

    public Integer getStockInNum() {
        return this.stockInNum;
    }

    public Integer getSignNum() {
        return this.signNum;
    }

    public String getWareCode() {
        return this.wareCode;
    }

    public Integer getCreateNum() {
        return this.createNum;
    }

    public String getPurchasingAbnormalOrderNo() {
        return this.purchasingAbnormalOrderNo;
    }

    public String getPrePurchase() {
        return this.prePurchase;
    }

    public String getNextPurchase() {
        return this.nextPurchase;
    }

    public Date getSplitDate() {
        return this.splitDate;
    }

    public String getTbAccount() {
        return this.tbAccount;
    }

    public String getTbOrderNo() {
        return this.tbOrderNo;
    }

    public String getAccountType() {
        return this.accountType;
    }

    public String getAlipayAccount() {
        return this.alipayAccount;
    }

    public String getTradeNo() {
        return this.tradeNo;
    }

    public Integer getNum() {
        return this.num;
    }

    public Integer getPurchaseNum() {
        return this.purchaseNum;
    }

    public Date getPayTime() {
        return this.payTime;
    }

    public Integer getSplitConfirmStatus() {
        return this.splitConfirmStatus;
    }

    public Date getSplitConfirmTime() {
        return this.splitConfirmTime;
    }

    public String getSplitConfirmUserId() {
        return this.splitConfirmUserId;
    }

    public String getSplitConfirmUserName() {
        return this.splitConfirmUserName;
    }

    public BigDecimal getPurchaseMoney() {
        return this.purchaseMoney;
    }

    public BigDecimal getPurchaseFreight() {
        return this.purchaseFreight;
    }

    public String getStallName() {
        return this.stallName;
    }

    public String getStallFloorNumber() {
        return this.stallFloorNumber;
    }

    public String getStallRoomNumber() {
        return this.stallRoomNumber;
    }

    public Date getCreateTime() {
        return this.createTime;
    }

    public Date getUpdateTime() {
        return this.updateTime;
    }

    public Integer getLogisticsStatus() {
        return this.logisticsStatus;
    }

    public Integer getBizType() {
        return this.bizType;
    }

    public String getPlatformType() {
        return this.platformType;
    }

    public String getShopCode() {
        return this.shopCode;
    }

    public String getShopName() {
        return this.shopName;
    }

    public Integer getViewStatus() {
        return this.viewStatus;
    }

    public Integer getPickStatus() {
        return this.pickStatus;
    }

    public Integer getSyncStatus() {
        return this.syncStatus;
    }

    public Date getPurchaseCompleteTime() {
        return this.purchaseCompleteTime;
    }

    public Date getPurchaseCreateTime() {
        return this.purchaseCreateTime;
    }

    public Date getStockCompleteTime() {
        return this.stockCompleteTime;
    }

    public Long getOriginalPurchaseId() {
        return this.originalPurchaseId;
    }

    public String getOriginalPurchaseNo() {
        return this.originalPurchaseNo;
    }

    public Integer getAbnormalStatus() {
        return this.abnormalStatus;
    }

    public Integer getReconciliationStatus() {
        return this.reconciliationStatus;
    }

    public String getRemark() {
        return this.remark;
    }

    public void setPurchaseId(Long purchaseId) {
        this.purchaseId = purchaseId;
    }

    public void setSystemSource(Integer systemSource) {
        this.systemSource = systemSource;
    }

    public void setPurchaseNo(String purchaseNo) {
        this.purchaseNo = purchaseNo;
    }

    public void setPurchaseManageUserId(String purchaseManageUserId) {
        this.purchaseManageUserId = purchaseManageUserId;
    }

    public void setPurchaseManageUserName(String purchaseManageUserName) {
        this.purchaseManageUserName = purchaseManageUserName;
    }

    public void setPurchaseUserId(String purchaseUserId) {
        this.purchaseUserId = purchaseUserId;
    }

    public void setPurchaseUserName(String purchaseUserName) {
        this.purchaseUserName = purchaseUserName;
    }

    public void setPurchaseStatus(Integer purchaseStatus) {
        this.purchaseStatus = purchaseStatus;
    }

    public void setStockInStatus(Integer stockInStatus) {
        this.stockInStatus = stockInStatus;
    }

    public void setStockInNum(Integer stockInNum) {
        this.stockInNum = stockInNum;
    }

    public void setSignNum(Integer signNum) {
        this.signNum = signNum;
    }

    public void setWareCode(String wareCode) {
        this.wareCode = wareCode;
    }

    public void setCreateNum(Integer createNum) {
        this.createNum = createNum;
    }

    public void setPurchasingAbnormalOrderNo(String purchasingAbnormalOrderNo) {
        this.purchasingAbnormalOrderNo = purchasingAbnormalOrderNo;
    }

    public void setPrePurchase(String prePurchase) {
        this.prePurchase = prePurchase;
    }

    public void setNextPurchase(String nextPurchase) {
        this.nextPurchase = nextPurchase;
    }

    public void setSplitDate(Date splitDate) {
        this.splitDate = splitDate;
    }

    public void setTbAccount(String tbAccount) {
        this.tbAccount = tbAccount;
    }

    public void setTbOrderNo(String tbOrderNo) {
        this.tbOrderNo = tbOrderNo;
    }

    public void setAccountType(String accountType) {
        this.accountType = accountType;
    }

    public void setAlipayAccount(String alipayAccount) {
        this.alipayAccount = alipayAccount;
    }

    public void setTradeNo(String tradeNo) {
        this.tradeNo = tradeNo;
    }

    public void setNum(Integer num) {
        this.num = num;
    }

    public void setPurchaseNum(Integer purchaseNum) {
        this.purchaseNum = purchaseNum;
    }

    public void setPayTime(Date payTime) {
        this.payTime = payTime;
    }

    public void setSplitConfirmStatus(Integer splitConfirmStatus) {
        this.splitConfirmStatus = splitConfirmStatus;
    }

    public void setSplitConfirmTime(Date splitConfirmTime) {
        this.splitConfirmTime = splitConfirmTime;
    }

    public void setSplitConfirmUserId(String splitConfirmUserId) {
        this.splitConfirmUserId = splitConfirmUserId;
    }

    public void setSplitConfirmUserName(String splitConfirmUserName) {
        this.splitConfirmUserName = splitConfirmUserName;
    }

    public void setPurchaseMoney(BigDecimal purchaseMoney) {
        this.purchaseMoney = purchaseMoney;
    }

    public void setPurchaseFreight(BigDecimal purchaseFreight) {
        this.purchaseFreight = purchaseFreight;
    }

    public void setStallName(String stallName) {
        this.stallName = stallName;
    }

    public void setStallFloorNumber(String stallFloorNumber) {
        this.stallFloorNumber = stallFloorNumber;
    }

    public void setStallRoomNumber(String stallRoomNumber) {
        this.stallRoomNumber = stallRoomNumber;
    }

    public void setCreateTime(Date createTime) {
        this.createTime = createTime;
    }

    public void setUpdateTime(Date updateTime) {
        this.updateTime = updateTime;
    }

    public void setLogisticsStatus(Integer logisticsStatus) {
        this.logisticsStatus = logisticsStatus;
    }

    public void setBizType(Integer bizType) {
        this.bizType = bizType;
    }

    public void setPlatformType(String platformType) {
        this.platformType = platformType;
    }

    public void setShopCode(String shopCode) {
        this.shopCode = shopCode;
    }

    public void setShopName(String shopName) {
        this.shopName = shopName;
    }

    public void setViewStatus(Integer viewStatus) {
        this.viewStatus = viewStatus;
    }

    public void setPickStatus(Integer pickStatus) {
        this.pickStatus = pickStatus;
    }

    public void setSyncStatus(Integer syncStatus) {
        this.syncStatus = syncStatus;
    }

    public void setPurchaseCompleteTime(Date purchaseCompleteTime) {
        this.purchaseCompleteTime = purchaseCompleteTime;
    }

    public void setPurchaseCreateTime(Date purchaseCreateTime) {
        this.purchaseCreateTime = purchaseCreateTime;
    }

    public void setStockCompleteTime(Date stockCompleteTime) {
        this.stockCompleteTime = stockCompleteTime;
    }

    public void setOriginalPurchaseId(Long originalPurchaseId) {
        this.originalPurchaseId = originalPurchaseId;
    }

    public void setOriginalPurchaseNo(String originalPurchaseNo) {
        this.originalPurchaseNo = originalPurchaseNo;
    }

    public void setAbnormalStatus(Integer abnormalStatus) {
        this.abnormalStatus = abnormalStatus;
    }

    public void setReconciliationStatus(Integer reconciliationStatus) {
        this.reconciliationStatus = reconciliationStatus;
    }

    public void setRemark(String remark) {
        this.remark = remark;
    }

    public int hashCode() {
        int result = 1;
        Object $purchaseId = this.getPurchaseId();
        result = result * 59 + ($purchaseId == null ? 43 : $purchaseId.hashCode());
        Object $systemSource = this.getSystemSource();
        result = result * 59 + ($systemSource == null ? 43 : $systemSource.hashCode());
        Object $purchaseNo = this.getPurchaseNo();
        result = result * 59 + ($purchaseNo == null ? 43 : $purchaseNo.hashCode());
        Object $purchaseManageUserId = this.getPurchaseManageUserId();
        result = result * 59 + ($purchaseManageUserId == null ? 43 : $purchaseManageUserId.hashCode());
        Object $purchaseManageUserName = this.getPurchaseManageUserName();
        result = result * 59 + ($purchaseManageUserName == null ? 43 : $purchaseManageUserName.hashCode());
        Object $purchaseUserId = this.getPurchaseUserId();
        result = result * 59 + ($purchaseUserId == null ? 43 : $purchaseUserId.hashCode());
        Object $purchaseUserName = this.getPurchaseUserName();
        result = result * 59 + ($purchaseUserName == null ? 43 : $purchaseUserName.hashCode());
        Object $purchaseStatus = this.getPurchaseStatus();
        result = result * 59 + ($purchaseStatus == null ? 43 : $purchaseStatus.hashCode());
        Object $stockInStatus = this.getStockInStatus();
        result = result * 59 + ($stockInStatus == null ? 43 : $stockInStatus.hashCode());
        Object $stockInNum = this.getStockInNum();
        result = result * 59 + ($stockInNum == null ? 43 : $stockInNum.hashCode());
        Object $signNum = this.getSignNum();
        result = result * 59 + ($signNum == null ? 43 : $signNum.hashCode());
        Object $wareCode = this.getWareCode();
        result = result * 59 + ($wareCode == null ? 43 : $wareCode.hashCode());
        Object $createNum = this.getCreateNum();
        result = result * 59 + ($createNum == null ? 43 : $createNum.hashCode());
        Object $purchasingAbnormalOrderNo = this.getPurchasingAbnormalOrderNo();
        result = result * 59 + ($purchasingAbnormalOrderNo == null ? 43 : $purchasingAbnormalOrderNo.hashCode());
        Object $prePurchase = this.getPrePurchase();
        result = result * 59 + ($prePurchase == null ? 43 : $prePurchase.hashCode());
        Object $nextPurchase = this.getNextPurchase();
        result = result * 59 + ($nextPurchase == null ? 43 : $nextPurchase.hashCode());
        Object $splitDate = this.getSplitDate();
        result = result * 59 + ($splitDate == null ? 43 : $splitDate.hashCode());
        Object $tbAccount = this.getTbAccount();
        result = result * 59 + ($tbAccount == null ? 43 : $tbAccount.hashCode());
        Object $tbOrderNo = this.getTbOrderNo();
        result = result * 59 + ($tbOrderNo == null ? 43 : $tbOrderNo.hashCode());
        Object $accountType = this.getAccountType();
        result = result * 59 + ($accountType == null ? 43 : $accountType.hashCode());
        Object $alipayAccount = this.getAlipayAccount();
        result = result * 59 + ($alipayAccount == null ? 43 : $alipayAccount.hashCode());
        Object $tradeNo = this.getTradeNo();
        result = result * 59 + ($tradeNo == null ? 43 : $tradeNo.hashCode());
        Object $num = this.getNum();
        result = result * 59 + ($num == null ? 43 : $num.hashCode());
        Object $purchaseNum = this.getPurchaseNum();
        result = result * 59 + ($purchaseNum == null ? 43 : $purchaseNum.hashCode());
        Object $payTime = this.getPayTime();
        result = result * 59 + ($payTime == null ? 43 : $payTime.hashCode());
        Object $splitConfirmStatus = this.getSplitConfirmStatus();
        result = result * 59 + ($splitConfirmStatus == null ? 43 : $splitConfirmStatus.hashCode());
        Object $splitConfirmTime = this.getSplitConfirmTime();
        result = result * 59 + ($splitConfirmTime == null ? 43 : $splitConfirmTime.hashCode());
        Object $splitConfirmUserId = this.getSplitConfirmUserId();
        result = result * 59 + ($splitConfirmUserId == null ? 43 : $splitConfirmUserId.hashCode());
        Object $splitConfirmUserName = this.getSplitConfirmUserName();
        result = result * 59 + ($splitConfirmUserName == null ? 43 : $splitConfirmUserName.hashCode());
        Object $purchaseMoney = this.getPurchaseMoney();
        result = result * 59 + ($purchaseMoney == null ? 43 : $purchaseMoney.hashCode());
        Object $purchaseFreight = this.getPurchaseFreight();
        result = result * 59 + ($purchaseFreight == null ? 43 : $purchaseFreight.hashCode());
        Object $stallName = this.getStallName();
        result = result * 59 + ($stallName == null ? 43 : $stallName.hashCode());
        Object $stallFloorNumber = this.getStallFloorNumber();
        result = result * 59 + ($stallFloorNumber == null ? 43 : $stallFloorNumber.hashCode());
        Object $stallRoomNumber = this.getStallRoomNumber();
        result = result * 59 + ($stallRoomNumber == null ? 43 : $stallRoomNumber.hashCode());
        Object $createTime = this.getCreateTime();
        result = result * 59 + ($createTime == null ? 43 : $createTime.hashCode());
        Object $updateTime = this.getUpdateTime();
        result = result * 59 + ($updateTime == null ? 43 : $updateTime.hashCode());
        Object $logisticsStatus = this.getLogisticsStatus();
        result = result * 59 + ($logisticsStatus == null ? 43 : $logisticsStatus.hashCode());
        Object $bizType = this.getBizType();
        result = result * 59 + ($bizType == null ? 43 : $bizType.hashCode());
        Object $platformType = this.getPlatformType();
        result = result * 59 + ($platformType == null ? 43 : $platformType.hashCode());
        Object $shopCode = this.getShopCode();
        result = result * 59 + ($shopCode == null ? 43 : $shopCode.hashCode());
        Object $shopName = this.getShopName();
        result = result * 59 + ($shopName == null ? 43 : $shopName.hashCode());
        Object $viewStatus = this.getViewStatus();
        result = result * 59 + ($viewStatus == null ? 43 : $viewStatus.hashCode());
        Object $pickStatus = this.getPickStatus();
        result = result * 59 + ($pickStatus == null ? 43 : $pickStatus.hashCode());
        Object $syncStatus = this.getSyncStatus();
        result = result * 59 + ($syncStatus == null ? 43 : $syncStatus.hashCode());
        Object $purchaseCompleteTime = this.getPurchaseCompleteTime();
        result = result * 59 + ($purchaseCompleteTime == null ? 43 : $purchaseCompleteTime.hashCode());
        Object $purchaseCreateTime = this.getPurchaseCreateTime();
        result = result * 59 + ($purchaseCreateTime == null ? 43 : $purchaseCreateTime.hashCode());
        Object $stockCompleteTime = this.getStockCompleteTime();
        result = result * 59 + ($stockCompleteTime == null ? 43 : $stockCompleteTime.hashCode());
        Object $originalPurchaseId = this.getOriginalPurchaseId();
        result = result * 59 + ($originalPurchaseId == null ? 43 : $originalPurchaseId.hashCode());
        Object $originalPurchaseNo = this.getOriginalPurchaseNo();
        result = result * 59 + ($originalPurchaseNo == null ? 43 : $originalPurchaseNo.hashCode());
        Object $abnormalStatus = this.getAbnormalStatus();
        result = result * 59 + ($abnormalStatus == null ? 43 : $abnormalStatus.hashCode());
        Object $reconciliationStatus = this.getReconciliationStatus();
        result = result * 59 + ($reconciliationStatus == null ? 43 : $reconciliationStatus.hashCode());
        Object $remark = this.getRemark();
        result = result * 59 + ($remark == null ? 43 : $remark.hashCode());
        return result;
    }

    public String toString() {
        return "PurchaseOrder(purchaseId=" + this.getPurchaseId() + ", systemSource=" + this.getSystemSource() + ", purchaseNo=" + this.getPurchaseNo() + ", purchaseManageUserId=" + this.getPurchaseManageUserId() + ", purchaseManageUserName=" + this.getPurchaseManageUserName() + ", purchaseUserId=" + this.getPurchaseUserId() + ", purchaseUserName=" + this.getPurchaseUserName() + ", purchaseStatus=" + this.getPurchaseStatus() + ", stockInStatus=" + this.getStockInStatus() + ", stockInNum=" + this.getStockInNum() + ", signNum=" + this.getSignNum() + ", wareCode=" + this.getWareCode() + ", createNum=" + this.getCreateNum() + ", purchasingAbnormalOrderNo=" + this.getPurchasingAbnormalOrderNo() + ", prePurchase=" + this.getPrePurchase() + ", nextPurchase=" + this.getNextPurchase() + ", splitDate=" + this.getSplitDate() + ", tbAccount=" + this.getTbAccount() + ", tbOrderNo=" + this.getTbOrderNo() + ", accountType=" + this.getAccountType() + ", alipayAccount=" + this.getAlipayAccount() + ", tradeNo=" + this.getTradeNo() + ", num=" + this.getNum() + ", purchaseNum=" + this.getPurchaseNum() + ", payTime=" + this.getPayTime() + ", splitConfirmStatus=" + this.getSplitConfirmStatus() + ", splitConfirmTime=" + this.getSplitConfirmTime() + ", splitConfirmUserId=" + this.getSplitConfirmUserId() + ", splitConfirmUserName=" + this.getSplitConfirmUserName() + ", purchaseMoney=" + this.getPurchaseMoney() + ", purchaseFreight=" + this.getPurchaseFreight() + ", stallName=" + this.getStallName() + ", stallFloorNumber=" + this.getStallFloorNumber() + ", stallRoomNumber=" + this.getStallRoomNumber() + ", createTime=" + this.getCreateTime() + ", updateTime=" + this.getUpdateTime() + ", logisticsStatus=" + this.getLogisticsStatus() + ", bizType=" + this.getBizType() + ", platformType=" + this.getPlatformType() + ", shopCode=" + this.getShopCode() + ", shopName=" + this.getShopName() + ", viewStatus=" + this.getViewStatus() + ", pickStatus=" + this.getPickStatus() + ", syncStatus=" + this.getSyncStatus() + ", purchaseCompleteTime=" + this.getPurchaseCompleteTime() + ", purchaseCreateTime=" + this.getPurchaseCreateTime() + ", stockCompleteTime=" + this.getStockCompleteTime() + ", originalPurchaseId=" + this.getOriginalPurchaseId() + ", originalPurchaseNo=" + this.getOriginalPurchaseNo() + ", abnormalStatus=" + this.getAbnormalStatus() + ", reconciliationStatus=" + this.getReconciliationStatus() + ", remark=" + this.getRemark() + ")";
    }
}
